﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
//using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//using System.Xml.Linq;
using System.Data.SqlClient;


public partial class productos_ListaProductos : System.Web.UI.Page
{
    clsConexion conexion = new clsConexion();
    clsFunciones objFunciones = new clsFunciones();
    String strConection=ConfigurationManager.AppSettings["cnfConexion"];
    const int ciOpcion = 300; //Código que tiene en la tabla seg_opcion
    String vsUsuario;
   
    protected void Page_Load(object sender, EventArgs e)
    {
        //ServiceReference1.BIServiceClient client = new ServiceReference1.BIServiceClient();
        //bool a = client.VerificarTarjeta("3232");
        
        try {
                bool vbTieneAcceso = false;
                this.Page.Title = ".: Productos - Listado de productos :.";
                vsUsuario = Session["ss_usuario"].ToString();

                panError.Visible = false;
                panInformation.Visible = false;

                //Verifica si el usuario tiene acceso a la opción
                if (vsUsuario != null)
                {
                    vbTieneAcceso = conexion.fAccesoOpcion(vsUsuario, ciOpcion);
                }


                //Habilita paneles de información
                panInformacion.Visible = vbTieneAcceso;
                panSinAcceso.Visible = !vbTieneAcceso; //La negación del anterior


                if (vbTieneAcceso)
                {
                    lblError.Text = "";
                    if (!Page.IsPostBack)
                    {
                        Inicializa();
                    }
                }
                else
                {
                    ltlSinAcceso.Text = objFunciones.fsMensajeAccesoRestringido();
                }
        }
        catch (Exception ex){
            NotificaError("Error al cargar página: " + ex.Message );
        }
    }

    private void Inicializa()
    {
        try
        {
            //Pasa parámetro de sección
            wucMenuOpciones.sCargaOpciones(3); //Se envía como parámetro el código de la sección


            String comando = "select d.nombre rubro,a.producto id, a.nombre producto, " +
                            "a.descripcion,c.nombre unidad, " +
                            "round(a.precio,2) precio,e.nombre moneda,b.nombre estado " +
                            "from producto a, " +
                            "estado_producto b, " +
                            "unidad_medida c, " +
                            "rubro d, " +
                            "moneda e " +
                            "where a.id_estado=b.estado_producto " +
                            "and a.id_unidad_medida=c.unidad_medida " +
                            "and a.id_rubro=d.rubro " +
                            "and a.id_moneda=e.moneda";
            DataSet dt = conexion.fEjecutaQueryDS(comando);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        catch (Exception ex)
        {
            NotificaError("Error al inicializar: " + ex.Message);
        }
    }

    private void NotificaError(String psMensaje) {
        panError.Visible = true;
        lblError.Text = psMensaje;
    }

    protected void lnkNuevoProducto_Click(object sender, EventArgs e)
    {
        Response.Redirect("/guatemala-logistic/productos/NuevoProducto.aspx");
    }

    protected void RowCommand_click(object sencer, GridViewCommandEventArgs e)
    {
        int row = int.Parse(e.CommandArgument.ToString());

        String deleteSql = "DELETE FROM producto WHERE nombre='" + GridView1.Rows[row].Cells[1].Text + "'";
        using (SqlConnection cnn = new SqlConnection(strConection))
        {
            cnn.Open();
            SqlCommand cm = new SqlCommand(deleteSql,cnn);
            cm.ExecuteNonQuery();
        }
        String comando = "select d.nombre rubro,a.producto id, a.nombre producto, " +
                        "a.descripcion,c.nombre unidad, " +
                        "round(a.precio,2) precio,e.nombre moneda,b.nombre estado " +
                        "from producto a, " +
                        "estado_producto b, " +
                        "unidad_medida c, " +
                        "rubro d, " +
                        "moneda e " +
                        "where a.id_estado=b.estado_producto " +
                        "and a.id_unidad_medida=c.unidad_medida " +
                        "and a.id_rubro=d.rubro " +
                        "and a.id_moneda=e.moneda";
        DataSet dt = conexion.fEjecutaQueryDS(comando);
        GridView1.DataSource = dt;
        GridView1.DataBind();  
    }
}
